package com.dz.risk.pojo.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.dz.risk.pojo.model.FormulaModel;
import com.dz.risk.validation.Add;
import com.dz.risk.validation.Update;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import springfox.documentation.spring.web.json.Json;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 报表数据值
 *
 * @author baohan
 * @email
 * @date 2021-07-05 14:49:45
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Accessors(chain = true)
@ApiModel(value = "报表数据值 : ReportFormsDataValueEntity")
@TableName(value = "t_st_report_forms_data_value", autoResultMap = true)
public class ReportFormsDataValueEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    @NotNull(message = "Id不能为空", groups = {Update.class})
    private String id;

    /**
     * 报表ID
     */
    @ApiModelProperty(value = "报表ID")
    private String reportFormsId;

    /**
     * 单元格编号(人工导入时设置,可能存在不同表设置相同单元格编号)
     */
    @ApiModelProperty(value = "单元格编号(人工导入时设置,可能存在不同表设置相同单元格编号)")
    private String tableCellSerialNumber;

    /**
     * 单元格数据值
     */
    @ApiModelProperty(value = "单元格数据值")
    private String dataValue;

    /**
     * 数据值单位
     */
    @ApiModelProperty(value = "单位(0 : 无 , 1 :金额、2 : 数量、3 : 日期、4 : 百分数)")
    private String dataUnit;

    /**
     * 版本号(根据需求记录到月份或日期)
     */
    @NotNull(message = "版本号不能为空", groups = {Add.class})
    @ApiModelProperty(value = "版本号(根据需求记录到月份或日期)")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date version;

    /**
     * 备注信息
     */
    @ApiModelProperty(value = "备注信息")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Json remark;

    /**
     * 行号
     */
    @ApiModelProperty(value = "行号")
    private Integer lineNumber;

    /**
     * 列号
     */
    @ApiModelProperty(value = "列号")
    private Integer columnNumber;

    /**
     * 单元格公式
     */
    @ApiModelProperty(value = "单元格公式")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private FormulaModel formula;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    @TableField(fill = FieldFill.INSERT)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String createdUser;

    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String updatedUser;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Date createdTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Date updatedTime;

    /**
     * 是否删除：false 不删除，true 删除
     */
    @TableLogic(value = "false", delval = "true")
    @ApiModelProperty(value = "是否删除：false 不删除，true 删除")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Boolean delFlag;
}
